package services

import models._
import scala.xml._
import scala.collection.mutable.ListBuffer

object InstituicaoService extends GenericService[Instituicao] {

  val nomeEntidade = "instituicao"

  def toObject(node: Node) = {
    val List(id, nome, email) = List("@id", "nome", "email").map { attr => (node \ attr).text }
    val endereco: Option[Endereco] = if ((node \ "endereco").length != 0) Some(toEndereco((node \ "endereco")(0))) else None
    val telefones = for (n <- (node \\ "telefone")) yield toTelefone(n)
    Instituicao(Some(id.toInt), nome, email, endereco, telefones.toList)
   }

  def toTelefone(node: Node) = {
    val List(id, numero) = List("@id", "numero").map { attr => (node \ attr).text }
    Telefone(Some(id.toInt), numero)
  }

  def toEndereco(node: Node) = {
    val List(id, logradouro, complemento, numero, bairro, cep, estado, cidade) = List("@id", "logradouro", "complemento", "numero", "bairro", "cep", "estado", "cidade").map { attr => (node \ attr).text }
    Endereco(Some(id.toInt), logradouro, complemento, numero, bairro, cep, estado, cidade)
  }

}